package com.zhuanzhuan.hero.user.facade;

import com.bj58.spat.scf.server.contract.annotation.ServiceContract;
import com.bj58.youpin.common.rpc.result.Result;
import com.bj58.zhuanzhuan.zzentry.common.service.entity.ServiceHeaderEntity;
import com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult;
import com.bj58.zhuanzhuan.zzentry.common.service.model.openEntry.ZZHeader;
import com.zhuanzhuan.hero.user.dto.auth.CommitAuthDTO;
import com.zhuanzhuan.hero.user.dto.auth.QueryUserAuthDetailDTO;
import com.zhuanzhuan.hero.user.vo.auth.UserAuthDetailVO;
import com.zhuanzhuan.hero.user.vo.auth.UserAuthResultVO;
import com.zhuanzhuan.hero.user.vo.auth.UserAuthStateVO;

import java.util.List;

/**
 * @ClassName IUserAuthenticationFacade
 * @Description
 * @Author hanjunjun
 * @Date 2024/6/19 15:58
 */
@ServiceContract
public interface IUserAuthenticationFacade {

    /**
     * 前端-认证-认证列表  查询所有认证类型的结果和文案
     *
     * @param header
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<java.util.List<com.zhuanzhuan.hero.user.vo.auth.UserAuthStateVO>>
     * @author  hanjunjun
     * @date 2024/6/27
     **/
    ZZOpenScfBaseResult<List<UserAuthStateVO>> queryUserAuthStates(@ZZHeader ServiceHeaderEntity header);

    /**
     * 是否已实名认证
     *
     * @param header
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<java.lang.Integer>
     * @author  hanjunjun
     * @date 2024/8/5
     **/
    ZZOpenScfBaseResult<Integer> isRealnameAuth(@ZZHeader ServiceHeaderEntity header);

    /**
     * 是否已实名认证
     *
     * @param uid
     * @return com.bj58.youpin.common.rpc.result.Result<java.lang.Integer>
     * @author  hanjunjun
     * @date 2024/8/5
     **/
    Result<Boolean> isRealnameAuthScf(Long uid);

    Result<List<UserAuthStateVO>> queryUserAuthStates(Long uid);

    /**
     * 前端-认证-查询实人、企业认证的详情
     *
     * @param header
     * @param queryUserAuthDetailDTO
     * @return UserAuthDetailVO
     * @author  hanjunjun
     * @date 2024/6/27
     **/
    ZZOpenScfBaseResult<UserAuthDetailVO> queryUserAuthDetail(@ZZHeader ServiceHeaderEntity header,
        QueryUserAuthDetailDTO queryUserAuthDetailDTO);

    /**
     * 前端-认证-用户提交认证
     *
     * @param header
     * @param commitAuthDTO
     * @return UserAuthResultVO
     * @author  hanjunjun
     * @date 2024/6/19
     **/
    ZZOpenScfBaseResult<UserAuthResultVO> commitUserAuth(@ZZHeader ServiceHeaderEntity header, CommitAuthDTO commitAuthDTO);
}
